'''
3.4.2 局部作用域与全局作用域
'''

# def function():
#     # 局部变量
#     variable = 12

# # 全局作用域中使用局部变量
# # NameError: name 'variable' is not defined
# print(variable)

# # 全局变量
# variable = 1

# def function1():
#     # 局部作用域中使用全局变量
#     a = variable + 1
#     print(a) # 2

# def function2():
#     # 局部作用域中修改全局变量
#     variable = variable + 1 # 报错
#     print(variable)

# # 调用函数
# function1()
# function2()

# def function1():
#     a = 1

# def function2():
#     b = 2
#     # 使用function1局部变量
#     print(a)

# function1()
# function2()

# 全局变量
a = 1

def function1():
    # 局部变量
    a = 2
    print(f'function1 a:{a}')

def function2():
    a = 3
    print(f'function2 a:{a}')

function1()
function2()
print(f'global a:{a}')

'''
全局作用域
'''

# 全局变量
a = 1
b = 10

def add(a, b, c):
    # 局部变量
    sum = 0
    sum = a + b + c
    a += 10
    b += 10
    return sum
res1 = add(a, b, 1)
res2 = add(a, b, 5)
print(f'res1:{res1}, res2:{res2}, a:{a}, b:{b}')

def add(c):
    '''
    整个函数中的代码块都在函数的局部作用域中
    '''
    # 局部变量
    sum = 0
    # 使用全局变量
    global a, b
    sum = a + b + c
    a = a + 10
    b = b + 10
    return sum
    
res1 = add(1)
res2 = add(1)
print(f'res1:{res1}, res2:{res2}, a:{a}, b:{b}')


